#include "biblioteca.h"

void alterarCliente(int *qntdClienteResi, int *qntdClienteComer) {
	tipo_cliente cliente; // aqui será onde vai escrito as structs para depois ir para o pontcliente
	tipo_cliente clienteResi, clienteComer;
	int escolha = 0, i, classe = 0;
	char nome[100];
	char telefone[100];
	printf("Escolha a sua busca: \n 1 - nome: \n 2 - telefone: \n 3 - Voltar\n");
	scanf("%d", &escolha);
	switch (escolha) {
	case 1:
		system("clear");
		printf("Digite o nome:");
		getchar();
		gets(nome);

		for (i = 0; i != ((*qntdClienteResi) + (*qntdClienteComer)); i++) { //faz um loop até a qtda de clientes.
			frClienteResi(&clienteResi, &i, qntdClienteResi);
			frClienteComer(&clienteComer, &i, qntdClienteComer);
			if (strcmp(clienteResi.nome, nome) == 10) { // ele retorna 10 quando é igual, logo.
				classe = 1;
			}
			if (strcmp(clienteComer.nome, nome) == 10) {
				classe = 2;
			}
			if (classe == 1) {
				// é igual.
				FILE *Arquivo;
				Arquivo = fopen("cadastro_residencial", "r+b");
				if (!Arquivo)
					printf("Erro na abertura do arquivo.");
				else {
					strcpy(cliente.classe, "Residencial");
					printf("Digite o nome do Cliente:\n");
					fgets(cliente.nome, 50, stdin); //adiciona o nome na struct ClienteResi;
					printf("Digite o email do Cliente:\n");
					fgets(cliente.email, 50, stdin);
					printf("Digite a cidade do Cliente:\n");
					fgets(cliente.endereco.cidade, 50, stdin);
					printf("Digite o bairro do Cliente:\n");
					fgets(cliente.endereco.bairro, 50, stdin);
					printf("Digite a rua do Cliente:\n");
					fgets(cliente.endereco.rua, 50, stdin);
					printf("Digite o numero da casa do Cliente:\n");
					fgets(cliente.endereco.numero, 50, stdin);
					printf("Digite o cep do Cliente:\n");
					fgets(cliente.endereco.cep, 50, stdin);
					printf("Digite o telefone do Cliente:\n");
					fgets(cliente.telefone, 50, stdin);

					frClienteResi(&clienteResi, &i, qntdClienteResi); //aqui ele vai puxar o consumo dele para reescrever, nesse "novo" cliente que na verdade é apenas ele alterado.
					cliente.tarifa.tarifa_residencial = clienteResi.tarifa.tarifa_residencial;
					cliente.tarifa.valor_do_minuto_local = clienteResi.tarifa.valor_do_minuto_local;
					cliente.tarifa.valor_do_minuto_local_Super = clienteResi.tarifa.valor_do_minuto_local_Super;
					cliente.tarifa.valor_do_minuto_local_Movel = clienteResi.tarifa.valor_do_minuto_local_Movel;
					cliente.tarifa.valor_do_minuto_interurbana = clienteResi.tarifa.valor_do_minuto_interurbana;
					cliente.tarifa.valor_do_minuto_interurbana_Movel = clienteResi.tarifa.valor_do_minuto_interurbana_Movel;
					cliente.tarifa.valor_acesso_despertador = clienteResi.tarifa.valor_acesso_despertador;
					cliente.tarifa.valor_acesso_caixa_postal = clienteResi.tarifa.valor_acesso_caixa_postal;

					fseek(Arquivo, ((sizeof(tipo_cliente)) * (i)), SEEK_SET);
					fwrite(&cliente, 1, sizeof(tipo_cliente), Arquivo);
					fclose(Arquivo);
					printf("Cliente Alterado com Sucesso.\n");
					getchar();
					break;
				}
			}
			if (classe == 2) {
				// é igual.
				FILE *Arquivo;
				Arquivo = fopen("cadastro_comercial", "r+b");
				if (!Arquivo)
					printf("Erro na abertura do arquivo.");
				else {
					strcpy(cliente.classe, "Comercial");
					printf("Digite o nome do Cliente:\n");
					fgets(cliente.nome, 50, stdin); //adiciona o nome na struct ClienteResi;
					printf("Digite o email do Cliente:\n");
					fgets(cliente.email, 50, stdin);
					printf("Digite a cidade do Cliente:\n");
					fgets(cliente.endereco.cidade, 50, stdin);
					printf("Digite o bairro do Cliente:\n");
					fgets(cliente.endereco.bairro, 50, stdin);
					printf("Digite a rua do Cliente:\n");
					fgets(cliente.endereco.rua, 50, stdin);
					printf("Digite o numero da casa do Cliente:\n");
					fgets(cliente.endereco.numero, 50, stdin);
					printf("Digite o cep do Cliente:\n");
					fgets(cliente.endereco.cep, 50, stdin);
					printf("Digite o telefone do Cliente:\n");
					fgets(cliente.telefone, 50, stdin);

					frClienteComer(&clienteComer, &i, qntdClienteComer); //aqui ele vai puxar o consumo dele para reescrever, nesse "novo" cliente que na verdade é apenas ele alterado.
					cliente.tarifa.tarifa_comercial = clienteComer.tarifa.tarifa_comercial;
					cliente.tarifa.tarifa_residencial = 0; //só para suprir o tamanho.
					cliente.tarifa.valor_do_minuto_local = clienteComer.tarifa.valor_do_minuto_local;
					cliente.tarifa.valor_do_minuto_local_Super = clienteComer.tarifa.valor_do_minuto_local_Super;
					cliente.tarifa.valor_do_minuto_local_Movel = clienteComer.tarifa.valor_do_minuto_local_Movel;
					cliente.tarifa.valor_do_minuto_interurbana = clienteComer.tarifa.valor_do_minuto_interurbana;
					cliente.tarifa.valor_do_minuto_interurbana_Movel = clienteComer.tarifa.valor_do_minuto_interurbana_Movel;
					cliente.tarifa.valor_acesso_despertador = clienteComer.tarifa.valor_acesso_despertador;
					cliente.tarifa.valor_acesso_caixa_postal = clienteComer.tarifa.valor_acesso_caixa_postal;

					fseek(Arquivo, ((sizeof(tipo_cliente)) * (i)), SEEK_SET);
					fwrite(&cliente, 1, sizeof(tipo_cliente), Arquivo);
					fclose(Arquivo);
					printf("Cliente Alterado com Sucesso.\n");
					getchar();
					break;
				}
			} else {
				// não é igual.
			}
		}
		break;
	case 2:
		system("clear");
		printf("Digite o telefone:");
		getchar();
		gets(telefone);
		for (i = 0; i != ((*qntdClienteResi) + (*qntdClienteComer)); i++) { //faz um loop até a qtda de clientes.
			frClienteResi(&clienteResi, &i, qntdClienteResi);
			frClienteComer(&clienteComer, &i, qntdClienteComer);
			if (strcmp(clienteResi.telefone, telefone) == 10) { // ele retorna 10 quando é igual, logo.
				classe = 1;
			}
			if (strcmp(clienteComer.telefone, telefone) == 10) {
				classe = 2;
			}
			if (classe == 1) {
				// é igual.
				FILE *Arquivo;
				Arquivo = fopen("cadastro_residencial", "r+b");
				if (!Arquivo)
					printf("Erro na abertura do arquivo.");
				else {
					strcpy(cliente.classe, "Residencial");
					printf("Digite o nome do Cliente:\n");
					fgets(cliente.nome, 50, stdin); //adiciona o nome na struct ClienteResi;
					printf("Digite o email do Cliente:\n");
					fgets(cliente.email, 50, stdin);
					printf("Digite a cidade do Cliente:\n");
					fgets(cliente.endereco.cidade, 50, stdin);
					printf("Digite o bairro do Cliente:\n");
					fgets(cliente.endereco.bairro, 50, stdin);
					printf("Digite a rua do Cliente:\n");
					fgets(cliente.endereco.rua, 50, stdin);
					printf("Digite o numero da casa do Cliente:\n");
					fgets(cliente.endereco.numero, 50, stdin);
					printf("Digite o cep do Cliente:\n");
					fgets(cliente.endereco.cep, 50, stdin);
					printf("Digite o telefone do Cliente:\n");
					fgets(cliente.telefone, 50, stdin);

					frClienteResi(&clienteResi, &i, qntdClienteResi); //aqui ele vai puxar o consumo dele para reescrever, nesse "novo" cliente que na verdade é apenas ele alterado.
					cliente.tarifa.tarifa_residencial = clienteResi.tarifa.tarifa_residencial;
					cliente.tarifa.valor_do_minuto_local = clienteResi.tarifa.valor_do_minuto_local;
					cliente.tarifa.valor_do_minuto_local_Super = clienteResi.tarifa.valor_do_minuto_local_Super;
					cliente.tarifa.valor_do_minuto_local_Movel = clienteResi.tarifa.valor_do_minuto_local_Movel;
					cliente.tarifa.valor_do_minuto_interurbana = clienteResi.tarifa.valor_do_minuto_interurbana;
					cliente.tarifa.valor_do_minuto_interurbana_Movel = clienteResi.tarifa.valor_do_minuto_interurbana_Movel;
					cliente.tarifa.valor_acesso_despertador = clienteResi.tarifa.valor_acesso_despertador;
					cliente.tarifa.valor_acesso_caixa_postal = clienteResi.tarifa.valor_acesso_caixa_postal;

					fseek(Arquivo, ((sizeof(tipo_cliente)) * (i)), SEEK_SET);
					fwrite(&cliente, 1, sizeof(tipo_cliente), Arquivo); // ele vai escrever só o tamanho que fica os dados, a parte da tarifa vai ficar igual;
					fclose(Arquivo);
					printf("Cliente Alterado com Sucesso.\n");
					getchar();
					break;
				}
			}
			if (classe == 2) {
				// é igual.
				FILE *Arquivo;
				Arquivo = fopen("cadastro_comercial", "r+b");
				if (!Arquivo)
					printf("Erro na abertura do arquivo.");
				else {
					strcpy(cliente.classe, "Comercial");
					printf("Digite o nome do Cliente:\n");
					fgets(cliente.nome, 50, stdin); //adiciona o nome na struct ClienteResi;
					printf("Digite o email do Cliente:\n");
					fgets(cliente.email, 50, stdin);
					printf("Digite a cidade do Cliente:\n");
					fgets(cliente.endereco.cidade, 50, stdin);
					printf("Digite o bairro do Cliente:\n");
					fgets(cliente.endereco.bairro, 50, stdin);
					printf("Digite a rua do Cliente:\n");
					fgets(cliente.endereco.rua, 50, stdin);
					printf("Digite o numero da casa do Cliente:\n");
					fgets(cliente.endereco.numero, 50, stdin);
					printf("Digite o cep do Cliente:\n");
					fgets(cliente.endereco.cep, 50, stdin);
					printf("Digite o telefone do Cliente:\n");
					fgets(cliente.telefone, 50, stdin);

					frClienteComer(&clienteComer, &i, qntdClienteComer); //aqui ele vai puxar o consumo dele para reescrever, nesse "novo" cliente que na verdade é apenas ele alterado.
					printf("---%d----\n", clienteComer.tarifa.tarifa_comercial);
					cliente.tarifa.tarifa_comercial = clienteComer.tarifa.tarifa_comercial;
					printf("....%d....", cliente.tarifa.tarifa_comercial);
					cliente.tarifa.tarifa_residencial = 0; //só para suprir o tamanho.
					cliente.tarifa.valor_do_minuto_local = clienteComer.tarifa.valor_do_minuto_local;
					cliente.tarifa.valor_do_minuto_local_Super = clienteComer.tarifa.valor_do_minuto_local_Super;
					cliente.tarifa.valor_do_minuto_local_Movel = clienteComer.tarifa.valor_do_minuto_local_Movel;
					cliente.tarifa.valor_do_minuto_interurbana = clienteComer.tarifa.valor_do_minuto_interurbana;
					cliente.tarifa.valor_do_minuto_interurbana_Movel = clienteComer.tarifa.valor_do_minuto_interurbana_Movel;
					cliente.tarifa.valor_acesso_despertador = clienteComer.tarifa.valor_acesso_despertador;
					cliente.tarifa.valor_acesso_caixa_postal = clienteComer.tarifa.valor_acesso_caixa_postal;

					fseek(Arquivo, ((sizeof(tipo_cliente)) * (i)), SEEK_SET);
					fwrite(&cliente, 1, sizeof(tipo_cliente), Arquivo);
					fclose(Arquivo);
					printf("Cliente Alterado com Sucesso.\n");
					getchar();
					break;
				}
			} else {
				// não é igual.
			}
		}
		break;
	case 3:
		system("clear");
		break;
	default:
		printf("escolha invalida, tente novamente \n");
		getchar();
		getchar();
		break;
	}
}
